Software middleware systems, such as Oracle WebLogic Server, typically use multiple components (e.g. software services, resources, and other components) that work together to process incoming requests. When a problem occurs in a higher level service this problem can be a manifestation of a misbehavior in one of the underlying components servicing the request. As such, to fully diagnose a problem with a particular request it is often necessary to look at all of the components in the middleware system that are participating in servicing that particular request.
Tracking the various components through which a request flows, to detect those components contributing to a problem in the request, can be a complex undertaking. Generally, such an analysis mandates that for every request problem analyzed, a new set of components must also be analyzed to detect those particular components that contribute to that particular problem. It is possible that the same components are used by multiple requests, and hence one request may impact another request. As such, when the components are analyzed they need to be analyzed in the context of all requests coming into the system. Looking at a runtime view of a large middleware system to analyze that system creates a complex tangled network of components.
Creating a complex network of components additionally requires a lot of data to detect relations. Unless a hook exists in the path of the executing request for all components, then creating an accurate picture of this network is not practical. Complex representations also increase the time needed to perform the analysis, and potentially introduce duplicate analysis on the same components based on various requests. Further analyzing this complex network generally requires analyzing all of the components in the request flow as one whole. If any components are missed, then the system must be able to properly discount it in the overall flow, before analyzing the rest of the components. These problems prevent, for example, a phased implementation, where, e.g. a first phase analyzes Java Database Connectivity (JDBC) and Enterprise JavaBeans (EJB), and a second phase analyzes the system's threads. These are the general areas that embodiments of the invention are intended to address.